package process;

import java.util.Iterator;
import java.util.LinkedList;

import databaseAcces.DisplayRequest;

public class Searching {

	
	
	// bien nommer les variables(englais eou francais); qui est chef de projet
	// se rappeler de ce qu'on avait fait y a deux semaines
	//lieu_travail == work
	public LinkedList<LinkedList<String>> findJobs(String domaine,String specialisation,String lieu_travail,double salaire_propose,String titre,String experience_requis,int PDomaine,int PSpecialisation,int PLieu_travail,int PSalaire,int PTitre,int PExperience_requis) {
		
		
		// list de poids accorde aux compétences(mais que des postes en informatiques te seront proposés)
		//int PSalaire = 0,PSpecialisation = 7,PDomaine = 3,PTitre = 1,PLieu_travail= 5,PExperience_requis = 2;
		int desir =PSalaire+ PSpecialisation+ PDomaine+ PTitre+  PLieu_travail+ PExperience_requis;// +3+1+5+2;
		
		
		// lancer une reqete pour recupérer l'ensemble des postes en informatiqques
		// on peut rechercher en fonction des deux maximums
		 DisplayRequest request= new DisplayRequest();
		 LinkedList<String> listPostes = request.getPostes(specialisation,lieu_travail);
		 LinkedList<LinkedList<String>> result = new  LinkedList<LinkedList<String>> ();
		 
		 
		// attriuber un score à chaque poste
		// fournir à utilisateur une 70% des plus grands scores(5 cietre)
	   	 Iterator it = listPostes.iterator();	
	   	 int i = 0,score=0;
	   	 LinkedList<String> poste5elements = new LinkedList<String>();
	   	 while (it.hasNext() ) {
	   		 String competence = ((String)it.next());
	   		//System.out.println("why il=t dont display "+competence);
	   		 poste5elements.add(competence);

	   		if (competence.equals(specialisation)) 

	   		if (competence.equals(specialisation)) 
	   			System.out.println(" egale" + competence);
	   		else  System.out.println("pas egale" + specialisation);
	   		

	   		if (i == 0) {
	   			score+= (competence).equals(titre) ? PTitre : 0 ;
	   		}
	   		if (i == 1) {
	   			score+= (competence).equals(specialisation) ? PSpecialisation : 0 ;
	   		}
	   		if (i == 2) {
	   			score+= (competence).equals(domaine) ? PDomaine : 0 ;
	   		}
	   	    if (i == 3) {
   			    score += (Double.parseDouble(competence) >= salaire_propose) ? PSalaire : 0;
   		    }
	   		if (i == 4) {
	   			score+= (competence).equals(experience_requis) ? PExperience_requis : 0 ;
	   		}
	   		if (i == 5) {
	   			score+= (competence).equals(lieu_travail) ? PLieu_travail : 0 ;
	   		}
	   		i++;
	   		if (i == 7) {
	   			i=0;
	   			if (score > 10 ) {//0.7*desir 
	   				System.out.println("ce poste fait parti des meilleurs	"+score);
	   				result.add(poste5elements);
	   				score = 0;
	   				//result.add(listPostes);
	   			}
	   			// displayPoste(poste5elements);
	   			poste5elements = new LinkedList<String>();
	   			score = 0;// return afficher(poste5elements);
	   		}
   		}
	   	
	   	 return result;
 }  
	public LinkedList<LinkedList<String>> chercherCandidatures(String specialisation,String diplome) {
		
		// list de competeences recherchés 
		String domaine="informatique",experience ="Informaticien";
		double salaire_propose = 5000;
		
		
		// list de poids accorde aux compétences(mais que des candidatures en informatiques te seront proposés)
		int PSalaire = 0,PSpecialisation = 7,PDomaine = 3,PExperience = 1,PDiplome= 5;
		int desir = 7+3+1+5;
		
		
		// lancer une reqete pour recupérer l'ensemble des candidatures répondant à deux des critères
		 DisplayRequest request= new DisplayRequest();
		 LinkedList<String> listCandidatures = request.getCandidatures(specialisation,diplome);
		 LinkedList<LinkedList<String>> result = new  LinkedList<LinkedList<String>> ();

		// attriuber un score à chaque poste
		// fournir à utilisateur une 70% des plus grands scores(5 cietre)
	   	 Iterator it = listCandidatures.iterator();	
	   	 int i = 0,score=0;
	   	 LinkedList<String> cand5elements = new LinkedList<String>();
	   	 while (it.hasNext() ) {
	   		 String competence = ((String)it.next());
	   		 cand5elements.add(competence);
	   		//if (competence.equals(specialisation)) System.out.println(" egale" + competence);else  System.out.println("pas egale" + specialisation);
	   		if (i == 0) {
	   			score+= (Double.parseDouble(competence) < salaire_propose) ? PSalaire : 0;
	   		}
	   		if (i == 1) {
	   			score+= (competence).equals(experience) ? PExperience : 0 ;
	   		}
	   		if (i == 2) {
	   			score+= (competence).equals(specialisation) ? PSpecialisation : 0 ;
	   		}
	   	    if (i == 3) {
   			    score += (competence).equals(domaine) ? PDomaine : 0 ;
   		    }
	   		if (i == 4) {
	   			score+= (competence).equals(diplome) ? PDiplome : 0 ;
	   		}
	   		
	   		i++;
	   		if (i == 5) {
	   			i=0;
	   			if (score > 10){//0.7*desir 
	   				System.out.println("ce poste fait parti des meilleurs	"+score);
	   				result.add(listCandidatures);
	   			}
	   			// displayCandidatures(poste5elements);
	   			cand5elements = new LinkedList<String>();// return afficher(poste5elements);
	   		}
   		}
	   	 return result;
 }
	  
		
public LinkedList<LinkedList<String>> findCandidate(String domaine,String specialisation,double salaire_propose, String lieu_travail,String diplome,String sexe,String experience,int PDomaine,int PSpecialisation,int PSalaire,int PLieu_travail,int PDiplome,int PExperience,int PSexe) {
		
		// list de competeences recherchés 
		//String domaine="informatique",
				//String experience ="Informaticien";
	//	double salaire_propose = 5000;
		
		
		// list de poids accorde aux compétences(mais que des candidatures en informatiques te seront proposés)
		 PSalaire = 0;PSpecialisation = 7;PDomaine = 3;PExperience = 1;PDiplome= 5;PLieu_travail = 1;PSexe = 0;
		int desir = PSalaire+PSpecialisation+PDomaine+PExperience+PDiplome+PLieu_travail+PSexe;//7+3+1+5;
		
		
		// lancer une reqete pour recupérer l'ensemble des candidatures répondant à deux des critères
		 DisplayRequest request= new DisplayRequest();
		 LinkedList<String> listCandidatures = request.getCandidatures(specialisation,diplome);
		 LinkedList<LinkedList<String>> result = new  LinkedList<LinkedList<String>> ();

		// attriuber un score à chaque poste
		// fournir à utilisateur une 70% des plus grands scores(5 cietre)
	   	 Iterator it = listCandidatures.iterator();	
	   	 int i = 0,score=0;
	   	 LinkedList<String> cand5elements = new LinkedList<String>();
	   	 while (it.hasNext() ) {
	   		 String competence = ((String)it.next());
	   		 cand5elements.add(competence);
	   		//if (competence.equals(specialisation)) System.out.println(" egale" + competence);else  System.out.println("pas egale" + specialisation);
	   		if (i == 0) {
	   			score+= (Double.parseDouble(competence) < salaire_propose) ? PSalaire : 0;
	   		}
	   		if (i == 1) {
	   			score+= (competence).equals(experience) ? PExperience : 0 ;
	   		}
	   		if (i == 2) {
	   			score+= (competence).equals(specialisation) ? PSpecialisation : 0 ;
	   		}
	   	    if (i == 3) {
   			    score += (competence).equals(domaine) ? PDomaine : 0 ;
   		    }
	   		if (i == 4) {
	   			score+= (competence).equals(diplome) ? PDiplome : 0 ;
	   		}
	   		if (i == 5) {
	   			score+= (competence).equals(sexe) ? PSexe : 0 ;
	   		}
	   	
	   		i++;
	   		if (i == 7) {
	   			i=0;
	   			if (score > 0.3*desir){//0.7*desir 
	   				System.out.println("ce job fait parti des meilleurs	"+score);
	   				result.add(listCandidatures);
	   			}
	   			// displayCandidatures(poste5elements);
	   			cand5elements = new LinkedList<String>();// return afficher(poste5elements);
	   		}
   		}
	   	 return result;
 }
	  
		
	
	int getScores(LinkedList<String> postes,int PSalaire,int PSpecialisation,int PDate_debut,int PTitre,int PLieu_travail) {
		int s = 0;
		 Iterator it = postes.iterator();	
	   	 while (it.hasNext() ) {
	   		 
	   	 }
		return 0;
	}
}
